package crazyjava;

import java.util.Iterator;
import java.util.concurrent.CopyOnWriteArrayList;

//不能改动此Test类	
public class ThreadInterView extends Thread{
	
	private TestDo testDo;
	private String key;
	private String value;
	
	public ThreadInterView(String key,String key2,String value){
		this.testDo = TestDo.getInstance();
		/*常量"1"和"1"是同一个对象，下面这行代码就是要用"1"+""的方式产生新的对象，
		以实现内容没有改变，仍然相等（都还为"1"），但对象却不再是同一个的效果*/
		this.key = key; 
		this.value = value;
	}


	public static void main(String[] args) throws InterruptedException{
		ThreadInterView a = new ThreadInterView("1","","1");
		ThreadInterView b = new ThreadInterView("1","","2");
		ThreadInterView c = new ThreadInterView("3","","3");
		ThreadInterView d = new ThreadInterView("4","","4");
		System.out.println("begin:"+(System.currentTimeMillis()/1000));
		a.start();
		b.start();
		c.start();
		d.start();

	}
	
	public void run(){
		testDo.doSome(key, value);
	}
}

class TestDo {

	private TestDo() {}
	@SuppressWarnings("rawtypes")
	private CopyOnWriteArrayList list = new CopyOnWriteArrayList();
	private static TestDo _instance = new TestDo();	
	public static TestDo getInstance() {
		return _instance;
	}

	public void doSome(Object key, String value) {
        Object o =key;
        if(!list.contains(o)){
        	list.add(o);
        }else{
        	for(Iterator it=list.iterator();it.hasNext();){
        		Object oo =it.next();
        		if(o.equals(oo)){
        			o=oo;
        		}
        		break;
        	}
        }
		synchronized (o) {
		// 以大括号内的是需要局部同步的代码，不能改动!
		{
			try {
				Thread.sleep(1000);
				System.out.println(key+":"+value + ":"
						+ (System.currentTimeMillis() / 1000));
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		}
	}

}